/*
 *  bytecode-list.h
 *  joosVM
 *
 *  Created by Smári Waage on 1.9.2009.
 *  Copyright 2009 smari.org. All rights reserved.
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License
 *  as published by the Free Software Foundation; either version 2
 *  of the License, or (at your option) any later version.
 *  
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. *
 */

#ifndef bytecode_list___ 
#define bytecode_list___ 

/*List form: id, "name", byte, instruction_size, popoff,pushon,type, function
	id		= ...id
	"name"	= string with the name of the bytecode
	byte	= the "number" of the bytecode
	instruction_size	= the size of the instruction in bytes
	pops_off_stack		= number of words pop-ed of stack
	push_on_stack		= number of words push-ed on stack 
	type_left_on_stack	= 0=Numerial, 1=Reference, 3=Special and have to do more to find out.
	function			= function pointer to the function that implements the bytecode.
 */

#define BYTECODE_LIST(T)  \
T(OPC_NOP,                      "NOP",                      0,		1,	0,0,0,		Bytecodes::nop) 		/*0x00	//Joos2*/	\
T(OPC_ACONST_NULL,              "ACONST_NULL",              1,		1,	0,1,1,		Bytecodes::aconst_null) 		/*0x01	//Joos2*/	\
T(OPC_ICONST_M1,                "ICONST_M1",                2,		1,	0,1,0,		Bytecodes::iconst_m1) 		/*0x02	//Joos2*/	\
T(OPC_ICONST_0,                 "ICONST_0",                 3,		1,	0,1,0,		Bytecodes::iconst_0) 		/*0x03	//Joos2*/	\
T(OPC_ICONST_1,                 "ICONST_1",                 4,		1,	0,1,0,		Bytecodes::iconst_1) 		/*0x04	//Joos2*/	\
T(OPC_ICONST_2,                 "ICONST_2",                 5,		1,	0,1,0,		Bytecodes::iconst_2) 		/*0x05	//Joos2*/	\
T(OPC_ICONST_3,                 "ICONST_3",                 6,		1,	0,1,0,		Bytecodes::iconst_3) 		/*0x06	//Joos2*/	\
T(OPC_ICONST_4,                 "ICONST_4",                 7,		1,	0,1,0,		Bytecodes::iconst_4) 		/*0x07	//Joos2*/	\
T(OPC_ICONST_5,                 "ICONST_5",                 8,		1,	0,1,0,		Bytecodes::iconst_5) 		/*0x08	//Joos2*/	\
T(OPC_LCONST_0,                 "LCONST_0",                 9,		1,	0,2,0,		Bytecodes::lconst_0) \
T(OPC_LCONST_1,                 "LCONST_1",                 10,		1,	0,2,0,		Bytecodes::lconst_1) \
T(OPC_FCONST_0,                 "FCONST_0",                 11,		1,	0,1,0,		Bytecodes::fconst_0) \
T(OPC_FCONST_1,                 "FCONST_1",                 12,		1,	0,1,0,		Bytecodes::fconst_1) \
T(OPC_FCONST_2,                 "FCONST_2",                 13,		1,	0,1,0,		Bytecodes::fconst_2) \
T(OPC_DCONST_0,                 "DCONST_0",                 14,		1,	0,2,0,		Bytecodes::dconst_0) \
T(OPC_DCONST_1,                 "DCONST_1",                 15,		1,	0,2,0,		Bytecodes::dconst_1) \
T(OPC_BIPUSH,                   "BIPUSH",                   16,		2,	0,1,0,		Bytecodes::bipush) 		/*0x10	//Joos2*/	\
T(OPC_SIPUSH,                   "SIPUSH",                   17,		3,	0,1,0,		Bytecodes::sipush) 		/*0x11	//Joos2*/	\
T(OPC_LDC,                      "LDC",                      18,		2,  0,1,3,		Bytecodes::ldc) 		/*0x12	//Joos2*/	\
T(OPC_LDC_W,                    "LDC_W",                    19,		3,	0,1,3,		Bytecodes::ldc_w) \
T(OPC_LDC2_W,                   "LDC2_W",                   20,		3,	0,2,3,		Bytecodes::ldc2_w) \
T(OPC_ILOAD,                    "ILOAD",                    21,		2,  0,1,0,		Bytecodes::iload) 		/*0x15	//Joos2 -- note possible Wide(196)*/	\
T(OPC_LLOAD,                    "LLOAD",                    22,		2,  0,2,0,		Bytecodes::lload) \
T(OPC_FLOAD,                    "FLOAD",                    23,		2,  0,1,0,		Bytecodes::fload) \
T(OPC_DLOAD,                    "DLOAD",                    24,		2,  0,2,0,		Bytecodes::dload) \
T(OPC_ALOAD,                    "ALOAD",                    25,		2,  0,1,1,		Bytecodes::aload) 		/*0x19	//Joos2 -- note possible Wide(196)*/	\
T(OPC_ILOAD_0,                  "ILOAD_0",                  26,		1,  0,1,0,		Bytecodes::iload_0) 		/*0x1A	//Joos2*/	\
T(OPC_ILOAD_1,                  "ILOAD_1",                  27,		1,  0,1,0,		Bytecodes::iload_1) 		/*0x1B	//Joos2*/	\
T(OPC_ILOAD_2,                  "ILOAD_2",                  28,		1,  0,1,0,		Bytecodes::iload_2) 		/*0x1C	//Joos2*/	\
T(OPC_ILOAD_3,                  "ILOAD_3",                  29,		1,  0,1,0,		Bytecodes::iload_3) 		/*0x1D	//Joos2 //17*/	\
T(OPC_LLOAD_0,                  "LLOAD_0",                  30,		1,  0,2,0,		Bytecodes::lload_0) \
T(OPC_LLOAD_1,                  "LLOAD_1",                  31,		1,  0,2,0,		Bytecodes::lload_1) \
T(OPC_LLOAD_2,                  "LLOAD_2",                  32,		1,  0,2,0,		Bytecodes::lload_2) \
T(OPC_LLOAD_3,                  "LLOAD_3",                  33,		1,  0,2,0,		Bytecodes::lload_3) \
T(OPC_FLOAD_0,                  "FLOAD_0",                  34,		1,  0,1,0,		Bytecodes::fload_0) \
T(OPC_FLOAD_1,                  "FLOAD_1",                  35,		1,  0,1,0,		Bytecodes::fload_1) \
T(OPC_FLOAD_2,                  "FLOAD_2",                  36,		1,  0,1,0,		Bytecodes::fload_2) \
T(OPC_FLOAD_3,                  "FLOAD_3",                  37,		1,  0,1,0,		Bytecodes::fload_3) \
T(OPC_DLOAD_0,                  "DLOAD_0",                  38,		1,  0,2,0,		Bytecodes::dload_0) \
T(OPC_DLOAD_1,                  "DLOAD_1",                  39,		1,  0,2,0,		Bytecodes::dload_1) \
T(OPC_DLOAD_2,                  "DLOAD_2",                  40,		1,  0,2,0,		Bytecodes::dload_2) \
T(OPC_DLOAD_3,                  "DLOAD_3",                  41,		1,  0,2,0,		Bytecodes::dload_3) \
T(OPC_ALOAD_0,                  "ALOAD_0",                  42,		1,  0,1,1,		Bytecodes::aload_0) \
T(OPC_ALOAD_1,                  "ALOAD_1",                  43,		1,  0,1,1,		Bytecodes::aload_1) \
T(OPC_ALOAD_2,                  "ALOAD_2",                  44,		1,  0,1,1,		Bytecodes::aload_2) \
T(OPC_ALOAD_3,                  "ALOAD_3",                  45,		1,  0,1,1,		Bytecodes::aload_3) \
T(OPC_IALOAD,                   "IALOAD",                   46,		1,	1,1,0,		Bytecodes::iaload) 		/*0x2E	//Joos2*/	\
T(OPC_LALOAD,                   "LALOAD",                   47,		1,	1,2,0,		Bytecodes::notImplemented) \
T(OPC_FALOAD,                   "FALOAD",                   48,		1,	1,1,0,		Bytecodes::notImplemented) \
T(OPC_DALOAD,                   "DALOAD",                   49,		1,	1,2,0,		Bytecodes::notImplemented) \
T(OPC_AALOAD,                   "AALOAD",                   50,		1,	1,1,1,		Bytecodes::aaload) 		/*0x32	//Joos2*/	\
T(OPC_BALOAD,                   "BALOAD",                   51,		1,	1,1,0,		Bytecodes::baload) 		/*0x33	//Joos2*/	\
T(OPC_CALOAD,                   "CALOAD",                   52,		1,	1,1,0,		Bytecodes::notImplemented) 		/*0x34	//Joos2*/	\
T(OPC_SALOAD,                   "SALOAD",                   53,		1,	1,1,0,		Bytecodes::notImplemented) 		/*0x35	//Joos2*/	\
T(OPC_ISTORE,                   "ISTORE",                   54,		2,	1,0,0,		Bytecodes::istore) 		/*0x36	//Joos2 -- note possible Wide(196)*/	\
T(OPC_LSTORE,                   "LSTORE",                   55,		2,	2,0,0,		Bytecodes::lstore) \
T(OPC_FSTORE,                   "FSTORE",                   56,		2,	1,0,0,		Bytecodes::fstore) \
T(OPC_DSTORE,                   "DSTORE",                   57,		2,	2,0,0,		Bytecodes::dstore) \
T(OPC_ASTORE,                   "ASTORE",                   58,		2,	1,0,1,		Bytecodes::astore) \
T(OPC_ISTORE_0,                 "ISTORE_0",                 59,		1,	1,0,0,		Bytecodes::istore_0) 		/*0x3C	//Joos2*/	\
T(OPC_ISTORE_1,                 "ISTORE_1",                 60,		1,	1,0,0,		Bytecodes::istore_1) 		/*0x3D	//Joos2*/	\
T(OPC_ISTORE_2,                 "ISTORE_2",                 61,		1,	1,0,0,		Bytecodes::istore_2) 		/*0x3E	//Joos2*/	\
T(OPC_ISTORE_3,                 "ISTORE_3",                 62,		1,	1,0,0,		Bytecodes::istore_3) 		/*0x3F	//Joos2 //27*/	\
T(OPC_LSTORE_0,                 "LSTORE_0",                 63,		1,	2,0,0,		Bytecodes::lstore_0) \
T(OPC_LSTORE_1,                 "LSTORE_1",                 64,		1,	2,0,0,		Bytecodes::lstore_1) \
T(OPC_LSTORE_2,                 "LSTORE_2",                 65,		1,	2,0,0,		Bytecodes::lstore_2) \
T(OPC_LSTORE_3,                 "LSTORE_3",                 66,		1,	2,0,0,		Bytecodes::lstore_3) \
T(OPC_FSTORE_0,                 "FSTORE_0",                 67,		1,	1,0,0,		Bytecodes::fstore_0) \
T(OPC_FSTORE_1,                 "FSTORE_1",                 68,		1,	1,0,0,		Bytecodes::fstore_1) \
T(OPC_FSTORE_2,                 "FSTORE_2",                 69,		1,	1,0,0,		Bytecodes::fstore_2) \
T(OPC_FSTORE_3,                 "FSTORE_3",                 70,		1,	1,0,0,		Bytecodes::fstore_3) \
T(OPC_DSTORE_0,                 "DSTORE_0",                 71,		1,	2,0,0,		Bytecodes::dstore_0) \
T(OPC_DSTORE_1,                 "DSTORE_1",                 72,		1,	2,0,0,		Bytecodes::dstore_1) \
T(OPC_DSTORE_2,                 "DSTORE_2",                 73,		1,	2,0,0,		Bytecodes::dstore_2) \
T(OPC_DSTORE_3,                 "DSTORE_3",                 74,		1,	2,0,0,		Bytecodes::dstore_3) \
T(OPC_ASTORE_0,                 "ASTORE_0",                 75,		1,	1,0,1,		Bytecodes::astore_0) 		/*0x4B	//Joos2*/	\
T(OPC_ASTORE_1,                 "ASTORE_1",                 76,		1,	1,0,1,		Bytecodes::astore_1) 		/*0x4C	//Joos2*/	\
T(OPC_ASTORE_2,                 "ASTORE_2",                 77,		1,	1,0,1,		Bytecodes::astore_2) 		/*0x4D	//Joos2*/	\
T(OPC_ASTORE_3,                 "ASTORE_3",                 78,		1,	1,0,1,		Bytecodes::astore_3) 		/*0x4E	//Joos2*/	\
T(OPC_IASTORE,                  "IASTORE",                  79,		1,	3,0,0,		Bytecodes::iastore) 		/*0x4F	//Joos2*/	\
T(OPC_LASTORE,                  "LASTORE",                  80,		1,	3,0,0,		Bytecodes::notImplemented) \
T(OPC_FASTORE,                  "FASTORE",                  81,		1,	3,0,0,		Bytecodes::notImplemented) \
T(OPC_DASTORE,                  "DASTORE",                  82,		1,	3,0,0,		Bytecodes::notImplemented) \
T(OPC_AASTORE,                  "AASTORE",                  83,		1,	3,0,1,		Bytecodes::aastore) 		/*0x53	//Joos2*/	\
T(OPC_BASTORE,                  "BASTORE",                  84,		1,	3,0,0,		Bytecodes::bastore) 		/*0x54	//Joos2*/	\
T(OPC_CASTORE,                  "CASTORE",                  85,		1,	3,0,0,		Bytecodes::notImplemented) 		/*0x55	//Joos2*/	\
T(OPC_SASTORE,                  "SASTORE",                  86,		1,	3,0,0,		Bytecodes::notImplemented) 		/*0x56	//Joos2*/	\
T(OPC_POP,                      "POP",                      87,		1,	1,0,0,		Bytecodes::pop) 		/*0x57	//Joos2*/	\
T(OPC_POP2,                     "POP2",                     88,		1,	2,0,0,		Bytecodes::pop2) \
T(OPC_DUP,                      "DUP",                      89,		1,	1,2,3,		Bytecodes::dup) 		/*0x59	//Joos2*/	\
T(OPC_DUP_X1,                   "DUP_X1",                   90,		1,	1,2,3,		Bytecodes::dup_x1) 		/*0x5A	//Joos2*/	\
T(OPC_DUP_X2,                   "DUP_X2",                   91,		1,	1,2,3,		Bytecodes::dup_x2) 		/*0x5B	//Joos2*/	\
T(OPC_DUP2,                     "DUP2",                     92,		1,	2,4,3,		Bytecodes::dup2) 		/*0x5C	//Joos2*/	\
T(OPC_DUP2_X1,                  "DUP2_X1",                  93,		1,	2,4,3,		Bytecodes::notImplemented) \
T(OPC_DUP2_X2,                  "DUP2_X2",                  94,		1,	2,4,3,		Bytecodes::notImplemented) \
T(OPC_SWAP,                     "SWAP",                     95,		1,	1,1,3,		Bytecodes::swap) 		/*0x5F	//Joos2*/	\
T(OPC_IADD,                     "IADD",                     96,		1,	2,1,0,		Bytecodes::iadd) 		/*0x60	//Joos2*/	\
T(OPC_LADD,                     "LADD",                     97,		1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_FADD,                     "FADD",                     98,		1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_DADD,                     "DADD",                     99,		1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_ISUB,                     "ISUB",                     100,	1,	2,1,0,		Bytecodes::isub) 		/*0x64	//Joos2 //44*/	\
T(OPC_LSUB,                     "LSUB",                     101,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_FSUB,                     "FSUB",                     102,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_DSUB,                     "DSUB",                     103,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_IMUL,                     "IMUL",                     104,	1,	2,1,0,		Bytecodes::imul) 		/*0x68	//Joos2*/	\
T(OPC_LMUL,                     "LMUL",                     105,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_FMUL,                     "FMUL",                     106,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_DMUL,                     "DMUL",                     107,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_IDIV,                     "IDIV",                     108,	1,	2,1,0,		Bytecodes::idiv) 		/*0x6C	//Joos2*/	\
T(OPC_LDIV,                     "LDIV",                     109,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_FDIV,                     "FDIV",                     110,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_DDIV,                     "DDIV",                     111,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_IREM,                     "IREM",                     112,	1,	2,1,0,		Bytecodes::irem) 		/*0x70	//Joos2*/	\
T(OPC_LREM,                     "LREM",                     113,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_FREM,                     "FREM",                     114,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_DREM,                     "DREM",                     115,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_INEG,                     "INEG",                     116,	1,	1,1,0,		Bytecodes::ineg) 		/*0x74	//Joos2*/	\
T(OPC_LNEG,                     "LNEG",                     117,	1,	2,2,0,		Bytecodes::notImplemented) \
T(OPC_FNEG,                     "FNEG",                     118,	1,	1,1,0,		Bytecodes::notImplemented) \
T(OPC_DNEG,                     "DNEG",                     119,	1,	2,2,0,		Bytecodes::notImplemented) \
T(OPC_ISHL,                     "ISHL",                     120,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_LSHL,                     "LSHL",                     121,	1,	3,2,0,		Bytecodes::notImplemented) \
T(OPC_ISHR,                     "ISHR",                     122,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_LSHR,                     "LSHR",                     123,	1,	3,1,0,		Bytecodes::notImplemented) \
T(OPC_IUSHR,                    "IUSHR",                    124,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_LUSHR,                    "LUSHR",                    125,	1,	3,1,0,		Bytecodes::notImplemented) \
T(OPC_IAND,                     "IAND",                     126,	1,	2,1,0,		Bytecodes::iand) 		/*0x7E	//Joos2*/	\
T(OPC_LAND,                     "LAND",                     127,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_IOR,                      "IOR",                      128,	1,	2,1,0,		Bytecodes::ior) 		/*0x80	//Joos2*/	\
T(OPC_LOR,                      "LOR",                      129,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_IXOR,                     "IXOR",                     130,	1,	2,1,0,		Bytecodes::ixor) 		/*0x82	//Joos2 //51*/	\
T(OPC_LXOR,                     "LXOR",                     131,	1,	4,2,0,		Bytecodes::notImplemented) \
T(OPC_IINC,                     "IINC",                     132,	3,	0,0,0,		Bytecodes::iinc) \
T(OPC_I2L,                      "I2L",                      133,	1,	1,2,0,		Bytecodes::i2l) \
T(OPC_I2F,                      "I2F",                      134,	1,	1,1,0,		Bytecodes::i2f) \
T(OPC_I2D,                      "I2D",                      135,	1,	1,2,0,		Bytecodes::i2d) \
T(OPC_L2I,                      "L2I",                      136,	1,	2,1,0,		Bytecodes::l2i) \
T(OPC_L2F,                      "L2F",                      137,	1,	2,1,0,		Bytecodes::l2f) \
T(OPC_L2D,                      "L2D",                      138,	1,	2,2,0,		Bytecodes::l2d) \
T(OPC_F2I,                      "F2I",                      139,	1,	1,1,0,		Bytecodes::f2i) \
T(OPC_F2L,                      "F2L",                      140,	1,	1,2,0,		Bytecodes::f2l) \
T(OPC_F2D,                      "F2D",                      141,	1,	1,2,0,		Bytecodes::f2d) \
T(OPC_D2I,                      "D2I",                      142,	1,	2,1,0,		Bytecodes::d2i) \
T(OPC_D2L,                      "D2L",                      143,	1,	2,2,0,		Bytecodes::d2l) \
T(OPC_D2F,                      "D2F",                      144,	1,	2,1,0,		Bytecodes::d2f) \
T(OPC_I2B,                      "I2B",                      145,	1,	1,1,0,		Bytecodes::i2b) 		/*0x91	//Joos2*/	\
T(OPC_I2C,                      "I2C",                      146,	1,	1,1,0,		Bytecodes::i2c) 		/*0x92	//Joos2*/	\
T(OPC_I2S,                      "I2S",                      147,	1,	1,1,0,		Bytecodes::i2s) 		/*0x93	//Joos2*/	\
T(OPC_LCMP,                     "LCMP",                     148,	1,	4,1,0,		Bytecodes::notImplemented) \
T(OPC_FCMPL,                    "FCMPL",                    149,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_FCMPG,                    "FCMPG",                    150,	1,	2,1,0,		Bytecodes::notImplemented) \
T(OPC_DCMPL,                    "DCMPL",                    151,	1,	4,1,0,		Bytecodes::notImplemented) \
T(OPC_DCMPG,                    "DCMPG",                    152,	1,	4,1,0,		Bytecodes::notImplemented) \
T(OPC_IFEQ,                     "IFEQ",                     153,	3,	1,0,0,		Bytecodes::ifeq) 		/*0x99	//Joos2*/	\
T(OPC_IFNE,                     "IFNE",                     154,	3,	1,0,0,		Bytecodes::ifne) 		/*0x9A	//Joos2*/	\
T(OPC_IFLT,                     "IFLT",                     155,	3,	1,0,0,		Bytecodes::iflt) 		/*0x9B	//Joos2*/	\
T(OPC_IFGE,                     "IFGE",                     156,	3,	1,0,0,		Bytecodes::ifge) 		/*0x9C	//Joos2*/	\
T(OPC_IFGT,                     "IFGT",                     157,	3,	1,0,0,		Bytecodes::ifgt) 		/*0x9D	//Joos2*/	\
T(OPC_IFLE,                     "IFLE",                     158,	3,	1,0,0,		Bytecodes::ifle) 		/*0x9E	//Joos2 //60*/	\
T(OPC_IF_ICMPEQ,                "IF_ICMPEQ",                159,	3,	2,0,0,		Bytecodes::if_icmpeq) \
T(OPC_IF_ICMPNE,                "IF_ICMPNE",                160,	3,	2,0,0,		Bytecodes::if_icmpne) \
T(OPC_IF_ICMPLT,                "IF_ICMPLT",                161,	3,	2,0,0,		Bytecodes::if_icmplt) 		/*0xA1	//Joos2*/	\
T(OPC_IF_ICMPGE,                "IF_ICMPGE",                162,	3,	2,0,0,		Bytecodes::if_icmpge) 		/*0xA2	//Joos2*/	\
T(OPC_IF_ICMPGT,                "IF_ICMPGT",                163,	3,	2,0,0,		Bytecodes::if_icmpgt) 		/*0xA3	//Joos2*/	\
T(OPC_IF_ICMPLE,                "IF_ICMPLE",                164,	3,	2,0,0,		Bytecodes::if_icmple) 		/*0xA4	//Joos2*/	\
T(OPC_IF_ACMPEQ,                "IF_ACMPEQ",                165,	3,	2,0,1,		Bytecodes::if_acmpeq) 		/*0xA5	//Joos2*/	\
T(OPC_IF_ACMPNE,                "IF_ACMPNE",                166,	3,	2,0,1,		Bytecodes::if_acmpne) 		/*0xA6	//Joos2*/	\
T(OPC_GOTO,                     "GOTO",                     167,	3,	0,0,0,		Bytecodes::_goto) 		/*0xA7	//Joos2*/	\
T(OPC_JSR,                      "JSR",                      168,	3,	0,1,1,		Bytecodes::notImplemented) \
T(OPC_RET,                      "RET",                      169,	2,	0,0,0,		Bytecodes::notImplemented) \
T(OPC_TABLESWITCH,              "TABLESWITCH",              170,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_LOOKUPSWITCH,             "LOOKUPSWITCH",             171,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_IRETURN,                  "IRETURN",                  172,	1,	1,0,3,		Bytecodes::ireturn) 		/*0xAC	//Joos2*/	\
T(OPC_LRETURN,                  "LRETURN",                  173,	1,	2,0,3,		Bytecodes::notImplemented) \
T(OPC_FRETURN,                  "FRETURN",                  174,	1,	1,0,3,		Bytecodes::notImplemented) \
T(OPC_DRETURN,                  "DRETURN",                  175,	1,	1,0,3,		Bytecodes::notImplemented) \
T(OPC_ARETURN,                  "ARETURN",                  176,	1,	1,0,3,		Bytecodes::areturn) 		/*0xB0	//Joos2*/	\
T(OPC_RETURN,                   "RETURN",                   177,	1,	1,0,3,		Bytecodes::_return) 		/*0xB1	//Joos2  //70*/	\
T(OPC_GETSTATIC,                "GETSTATIC",                178,	3,	0,0,3,		Bytecodes::getstatic) 		/*0xB2	//Joos2*/	\
T(OPC_PUTSTATIC,                "PUTSTATIC",                179,	3,	0,0,3,		Bytecodes::putstatic) 		/*0xB3	//Joos2*/	\
T(OPC_GETFIELD,                 "GETFIELD",                 180,	3,	1,0,3,		Bytecodes::getfield) 		/*0xB4	//Joos2*/	\
T(OPC_PUTFIELD,                 "PUTFIELD",                 181,	3,	1,0,3,		Bytecodes::putfield) 		/*0xB5	//Joos2*/	\
T(OPC_INVOKEVIRTUAL,            "INVOKEVIRTUAL",            182,	3,	0,0,3,		Bytecodes::invokevirtual) 		/*0xB6	//Joos2*/	\
T(OPC_INVOKESPECIAL,            "INVOKESPECIAL",            183,	3,	0,0,3,		Bytecodes::invokespecial) 		/*0xB7	//Joos2*/	\
T(OPC_INVOKESTATIC,             "INVOKESTATIC",             184,	3,	0,0,3,		Bytecodes::invokestatic) 		/*0xB8	//Joos2*/	\
T(OPC_INVOKEINTERFACE,          "INVOKEINTERFACE",          185,	5,	0,0,3,		Bytecodes::notImplemented) 		/*0xB9	//Joos2*/	\
T(OPC_BAD,                      "BAD",                      186,	1,	0,0,0,		Bytecodes::notImplemented) \
T(OPC_NEW,                      "NEW",                      187,	3,	0,1,1,		Bytecodes::_new) 		/*0xBB	//Joos2*/	\
T(OPC_NEWARRAY,                 "NEWARRAY",                 188,	2,	1,1,1,		Bytecodes::newarray) \
T(OPC_ANEWARRAY,                "ANEWARRAY",                189,	3,	1,1,1,		Bytecodes::anewarray) \
T(OPC_ARRAYLENGTH,              "ARRAYLENGTH",              190,	1,	1,1,0,		Bytecodes::arraylength) 		/*0xBE	//Joos2  //80*/	\
T(OPC_ATHROW,                   "ATHROW",                   191,	1,	1,1,1,		Bytecodes::athrow) 		/*0xBF	//Joos2*/	\
T(OPC_CHECKCAST,                "CHECKCAST",                192,	3,	1,1,1,		Bytecodes::checkcast) 		/*0xC0	//Joos2*/	\
T(OPC_INSTANCEOF,               "INSTANCEOF",               193,	3,	1,1,0,		Bytecodes::instanceof) 		/*0xC1	//Joos2*/	\
T(OPC_MONITORENTER,             "MONITORENTER",             194,	1,	1,0,0,		Bytecodes::notImplemented) \
T(OPC_MONITOREXIT,              "MONITOREXIT",              195,	1,	1,0,0,		Bytecodes::notImplemented) \
T(OPC_WIDE,                     "WIDE",                     196,	1,	0,0,0,		Bytecodes::wide) \
T(OPC_MULTIANEWARRAY,           "MULTIANEWARRAY",           197,	4,	0,1,3,		Bytecodes::multianewarray) 		/*0xC5	//Joos2*/	\
T(OPC_IFNULL,                   "IFNULL",                   198,	3,	1,0,0,		Bytecodes::ifnull) 		/*0xC6	//Joos2*/	\
T(OPC_IFNONNULL,                "IFNONNULL",                199,	3,	1,0,0,		Bytecodes::ifnonnull) 		/*0xC7	//Joos2  //86*/	\
T(OPC_GOTO_W,                   "GOTO_W",                   200,	5,	0,0,0,		Bytecodes::notImplemented) \
T(OPC_JSR_W,                    "JSR_W",                    201,	5,	0,1,1,		Bytecodes::notImplemented) \
T(OPC_BREAKPOINT,               "BREAKPOINT",               202,	1,	0,0,0,		Bytecodes::notImplemented) \
T(OPC_LDC_QUICK,                "LDC_QUICK",                203,	2,	0,1,3,		Bytecodes::notImplemented) \
T(OPC_LDC_W_QUICK,              "LDC_W_QUICK",              204,	3,	0,1,3,		Bytecodes::notImplemented) \
T(OPC_LDC2_W_QUICK,				"LDC2_W_QUICK",				205,	3,	0,2,0,		Bytecodes::notImplemented) \
T(OPC_GETFIELD_QUICK,           "GETFIELD_QUICK",           206,	3,	1,1,3,		Bytecodes::notImplemented) \
T(OPC_PUTFIELD_QUICK,           "PUTFIELD_QUICK",           207,	3,	2,0,3,		Bytecodes::notImplemented) \
T(OPC_GETFIELD2_QUICK,          "GETFIELD2_QUICK",          208,	3,	1,2,0,		Bytecodes::notImplemented) \
T(OPC_PUTFIELD2_QUICK,          "PUTFIELD2_QUICK",          209,	3,	3,0,0,		Bytecodes::notImplemented) \
T(OPC_GETSTATIC_QUICK,          "GETSTATIC_QUICK",          210,	3,	1,0,3,		Bytecodes::notImplemented) \
T(OPC_PUTSTATIC_QUICK,          "PUTSTATIC_QUICK",          211,	3,	0,1,3,		Bytecodes::notImplemented) \
T(OPC_GETSTATIC2_QUICK,         "GETSTATIC2_QUICK",         212,	3,	0,2,0,		Bytecodes::notImplemented) \
T(OPC_PUTSTATIC2_QUICK,         "PUTSTATIC2_QUICK",         213,	3,	2,0,0,		Bytecodes::notImplemented) \
T(OPC_INVOKEVIRTUAL_QUICK,      "INVOKEVIRTUAL_QUICK",      214,	3,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_INVOKENONVIRTUAL_QUICK,   "INVOKENONVIRTUAL_QUICK",   215,	3,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_INVOKESUPER_QUICK,        "INVOKESUPER_QUICK",        216,	3,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_GETFIELD_QUICK_REF,       "GETFIELD_QUICK_REF",       217,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_PUTFIELD_QUICK_REF,       "PUTFIELD_QUICK_REF",       218,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_GETSTATIC_QUICK_REF,      "GETSTATIC_QUICK_REF",      219,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_PUTSTATIC_QUICK_REF,      "PUTSTATIC_QUICK_REF",      220,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_GETFIELD_THIS_REF,        "GETFIELD_THIS_REF",        221,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED222,				"UNUSED",					222,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED223,				"UNUSED",					223,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED224,				"UNUSED",					224,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED225,				"UNUSED",					225,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_INVOKEVIRTUAL_QUICK_W,    "INVOKEVIRTUAL_QUICK_W",    226,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_GETFIELD_QUICK_W,         "GETFIELD_QUICK_W",         227,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_PUTFIELD_QUICK_W,         "PUTFIELD_QUICK_W",         228,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_GETFIELD_THIS,            "GETFIELD_THIS",            229,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_LOCK,                     "LOCK",                     230,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_ALOAD_THIS,               "ALOAD_THIS",               231,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_INVOKESTATIC_QUICK,       "INVOKESTATIC_QUICK",       232,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_NEW_QUICK,                "NEW_QUICK",                233,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED234,				"UNUSED",					234,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_ANEWARRAY_QUICK,          "ANEWARRAY_QUICK",          235,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED236,				"UNUSED",					236,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED237,				"UNUSED",					237,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED238,				"UNUSED",					238,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED239,				"UNUSED",					239,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED240,				"UNUSED",					240,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED241,				"UNUSED",					241,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED242,				"UNUSED",					242,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED243,				"UNUSED",					243,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED244,				"UNUSED",					244,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED245,				"UNUSED",					245,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED246,				"UNUSED",					246,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED247,				"UNUSED",					247,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED248,				"UNUSED",					248,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED249,				"UNUSED",					249,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED250,				"UNUSED",					250,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED251,				"UNUSED",					251,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED252,				"UNUSED",					252,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_UNUSED253,				"UNUSED",					253,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_IMPDEP1,					"IMPDEP1",					254,	0,	0,0,3,		Bytecodes::notImplemented) \
T(OPC_IMPDEP2,					"TERMINATE",				255,	1,	0,0,0,		Bytecodes::terminate) 


#endif
